package com.itheima.d1_polymorphism;
/*
    什么是多态？
        多态是在继承/实现情况下的一种现象，表现为：对象多态、行为多态。

    多态的前提
        1 有继承/实现关系；
        2 存在父类引用子类对象；
        3 存在方法重写

    多态的一个注意事项
        多态是对象、行为的多态，Java中的属性(成员变量)不谈多态

    需求 : 定义学生类 , 和老师类 , 继承人类 , 演示对象多态、行为多态。
 */
public class Test1 {
    public static void main(String[] args) {
        //父类引用子类对象
        //方法调用：编译看等号左边，运行看等号右边
        //访问属性：编译看等号左边，运行看等号左边
        //多态前提：存在继承，实现关系，存在父类引用子类对象，存在方法重写
        //对象多态
        //行为多态
        //java的成员变量不谈多态
        Student s1 = new Student();
        startRun(s1);
        Teacher t1 = new Teacher();
        startRun(t1);
    }
    //定义方法：使用父类的形参，可以接受所有子类对象，但是不能调用子类自定义的方法
    public static void startRun(People s){
        System.out.println("计时开始");
        s.run();
        if(s instanceof Student){
            //把父类强制转换成子类类型
            Student ss = (Student) s;
            ss.teyou();
        }
        if(s instanceof Teacher){
            Teacher tt = (Teacher) s;
            tt.teyou();
        }
        System.out.println("计时结束");

    }
}
